const db = require('../../MySql'); // 引入数据库连接
const { formatDateTime } = require('../utils/dateUtils')


/**
 * 系统配置模型类
 * 对应数据库中的 sys_config 表
 * 用于管理系统的基本配置信息，如网站名称、Logo、版权信息等
 */
class sys_config {
    /**
     * 构造函数 - 创建系统配置对象实例
     * 用于初始化系统配置的各项参数，对应数据库表中的字段
     * @param {string} id - 配置项ID，唯一标识符
     * @param {string} site_name - 网站名称，显示在系统前端的标题
     * @param {string} front_logo - 前端Logo路径，显示在用户界面的Logo图片
     * @param {string} back_logo - 后端Logo路径，显示在管理后台的Logo图片
     * @param {string} copy_right - 版权信息，显示在页面底部的版权声明
     * @param {string} create_time - 创建时间，配置项创建的时间戳
     * @param {string} update_time - 更新时间，配置项最后修改的时间戳
     * @param {string} create_by - 创建者，记录创建此配置项的用户ID或用户名
     * @param {string} update_by - 更新者，记录最后修改此配置项的用户ID或用户名
     * @param {number} data_flag - 数据标志，标识数据状态（0-正常，1-删除）
     * 
     * 使用示例：
     * const config = new sys_config(
     *     'config001',
     *     '在线考试系统',
     *     '/images/front-logo.png',
     *     '/images/back-logo.png',
     *     '© 2024 在线考试系统 版权所有',
     *     '2024-01-01 10:00:00',
     *     '2024-01-02 15:30:00',
     *     'admin001',
     *     'admin002',
     *     0
     * );
     */
    constructor(id, site_name,back_logo,front_logo,copy_right, create_time, update_time, create_by, update_by, data_flag) {
        this.id = id
        this.site_name = site_name
        this.copy_right = copy_right
        this.back_logo = back_logo
        this.front_logo = front_logo
        this.create_time = create_time
        this.update_time = update_time
        this.create_by = create_by
        this.update_by = update_by
        this.data_flag = data_flag
    }

    //更新网站名称
    static async updateSiteName(site_name,id) {
        const [res] = await db.query('update sys_config set site_name=?,update_time=? where id=?', [
            site_name,
            formatDateTime(new Date()),
            id
        ])
        return res
    }

    //更新版权信息
    static async updateCopyRight(copy_right,id) {
        const [res] = await db.query('update sys_config set copy_right=?,update_time=? where id=?', [
            copy_right,
            formatDateTime(new Date()),
            id
        ])
        return res
    }

    //更新后端Logo
    static async updateBackLogo(back_logo,id) {
        const [res] = await db.query('update sys_config set back_logo=?,update_time=? where id=?', [
            back_logo,
            formatDateTime(new Date()),
            id
        ])
        return res
    }

}

module.exports = sys_config